home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 715 / lha / unixutil / joinlzh.c < prev    next >
C/C++ Source or Header  |  1995-03-18  |  1KB  |  58 lines

  1. /*
  2.  * joinlzh - Join several parts of a LhA multivolume archive to one single
  3.  *           LZH archive.
  4.  *
  5.  * This is freely distributable. Do with it whatever you desire.
  6.  *
  7.  * Written by Stefan Boberg, 1992
  8.  *
  9.  */
  10.  
  11. #include <stdio.h>
  12. #include <string.h>
  13.  
  14. #define EXIT_FAILURE 1
  15.  
  16. FILE *open_vol(name, no)
  17. char *name;
  18. long no;
  19. {
  20.   char work[1024];
  21.  
  22.   if (no)
  23.     sprintf(work, "%s.l%02d", name, no);
  24.   else
  25.     sprintf(work, "%s.lzh", name);
  26.  
  27.   return fopen(work, "rb");
  28. }
  29.  
  30. int main(argc, argv)
  31. int argc;
  32. char **argv;
  33. {
  34.   char buffer[1024];              /* Small I/O buffer */
  35.   FILE *in, *out;
  36.   long j, vol_no = 0;
  37.  
  38.   if (argc != 3) {
  39.     printf("Usage: %s <infilebase> <outname>\n", argv[0]);
  40.     exit(EXIT_FAILURE);
  41.   }
  42.  
  43.   if (out = fopen(argv[2], "wb")) {
  44.     while (in = open_vol(argv[1], vol_no++)) {
  45.       while(!feof(in)) {
  46.         j = fread(buffer, 1, 1024, in);
  47.         fwrite(buffer, 1, j, out);
  48.       }
  49.       fclose(in);
  50.     }
  51.   } else {
  52.     printf("Error opening destination!!\n\n");
  53.     exit(EXIT_FAILURE);
  54.   }
  55.  
  56.   return 0;
  57. }
  58.